package Emetteurs;
import Informations.*;
import Destinations.*;
import Transmetteurs.*;
import Sources.*;
import Sondes.*;
import Recepteurs.*;
/**
 * 
 */

/**
 * Classe emetteurNRZ qui herite de la classe Emetteur
 * @author THIAM, 
 * @author NANOUS
 * @author GUEYE
 * @author NDIAYE
 * @param <R,T>
 *
 */
 public class EmetteurNRZ extends Emetteur {

	/**
	 * constructeur
	 * @param nbreEchantillons: le nbre d'echantillon par bit
	 * @param min: la valeur de l'amplitude min
	 * @param la valeur de l'amplitude max
	 */
	public EmetteurNRZ(int nbreEchantillons,float min,float max) {
		// TODO Auto-generated constructor stub
		super(nbreEchantillons,min,max);
		informationEmise=new Information<Float>();
	}
	
	
	/**
	    * Cette methode va recevoir les informations emises par la source
	    */
	public void recevoir(Information<Boolean> information)throws InformationNonConforme {
		if(information==null) throw new InformationNonConforme();
		
		this.informationRecue=information;
		emettre();
	}
	
	/**
	    * Cette methode va emetre les informations recues
	    */
	public void emettre() throws InformationNonConforme{
		
		
		for(int i=0;i<informationRecue.nbElements();i++){
			//System.out.println(informationRecue.iemeElement(i));
			if(informationRecue.iemeElement(i)==false){
				for(int j=0;j<nbreEchantillons;j++){
					this.informationEmise.add(min);
					//System.out.println("Emise par recpeteur min : "+informationEmise);
				}
				
				//System.out.println("Emise par recpeteur min : "+informationEmise);
			}
			else{
				
				for(int j=0;j<nbreEchantillons;j++){
					this.informationEmise.add(max);
				}
				
				//System.out.println("Emise par recpeteur max : "+informationEmise);
			}
		}
		
		for (DestinationInterface <Float> destination : destinationsConnectees) {
			destination.recevoir(informationEmise);	
			}
		
		
	}

	
	
		

}
